;void recortar_asm (
;	unsigned char *src,		RDI (DIL)
;	unsigned char *dst,		RSI (SIL)
;	int m,					RDX	(EDX)
;	int n,					RCX	(ECX)
;	int src_row_size,		R8	(R8D)
;	int dst_row_size,		R9	(R9D)
;	int x,					rbp+16
;	int y,					rbp+24
;	int tam					rbp+32
;);

;%define tam [rbp +8]
;%define x [rbp+24]
;%define y [rbp+32]


%define tam [rbp +32]
%define x [rbp+16]
%define y [rbp+24]


global recortar_asm

recortar_asm:
	;; TODO: Implementar
	push rbp
	mov rbp, rsp


;	mov rax, tam
;	xor rcx, rcx
;	mov ecx, x
;	mov rdx, y


;	xor r9, r9
;	mov r9, rsi		;me copio dst
	
	xor r10, r10
	mov r10d, y		;pongo y
	xor rax, rax
	mov eax, ecx;r8d	;pongo n en EAX
	mul r10			;multiplico y*n
	mov r10, rax
	add r10d, x		;Le sumo x
	add r10, rdi	;le sumo src => r10 = src[x+(y*n)]

	xor rax, rax
;	mov rax, 64		;r12 es Contador de Filas CAMBIAR EL 63 POR TAM/16
.cicloF:
	xor r11, r11
;	mov r11, 64		;r11 es contador de columnas CAMBIAR EL 63 POR TAM/16
	
	.cicloC:
		movdqu xmm0, [r10]	
		movdqu [rsi], xmm0	;Copio 16 bytes
		add rsi, 16			;sumo 16 bytes a dst (los q acabo de copiar)
		add r10, 16			;sumo 16 a src
		add r11, 16			;sumo 16 bytes al contador
		cmp r11, tam		;si llegue a tam salgo del ciclo
		jne .cicloC

;	add r10, 16
	add r10, r8				;
;	sub r10, 1
	sub r10, tam	;A src le sumo (src_row_size - tam) para ponerlo al ppio de la imagen que tengo que pasar en la linea que sigue.
	add rax, 1;	dec rax
	cmp rax, tam
	jne .cicloF
	
;	pop r12
	pop rbp
	ret
